// Keywords: migration, dispersal

initialize() {
	initializeMutationRate(1e-7);
	initializeMutationType("m1", 0.5, "f", 0.0);
	initializeGenomicElementType("g1", m1, 1.0);
	initializeGenomicElement(g1, 0, 99999);
	initializeRecombinationRate(1e-8);
}
1 early() { sim.addSubpop("p1", 500); }
100 early() { sim.addSubpopSplit("p2", 100, p1); }
100:150 early() {
	migrationProgress = (sim.cycle - 100) / 50;
	p1.setMigrationRates(p2, 0.2 * migrationProgress);
	p2.setMigrationRates(p1, 0.8 * migrationProgress);
}
1000 early() { sim.addSubpopSplit("p3", 10, p2); }
1000:1100 early() {
	p3Progress = (sim.cycle - 1000) / 100;
	p3.setSubpopulationSize(asInteger(990 * p3Progress + 10));
	p1.setMigrationRates(p3, 0.1 * p3Progress);
	p2.setMigrationRates(p3, 0.01 * p3Progress);
}
2000 early() { p2.setSubpopulationSize(0); }
10000 late() { sim.outputFixedMutations(); }
